package com.woniuxy.controller;


import com.woniuxy.controller.form.ProductCatForm;
import com.woniuxy.exception.DdException;
import com.woniuxy.service.PawnProductCatService;
import com.woniuxy.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author hujianying
 * @since 2022-03-23
 */
@Api(tags = "分类信息相关接口")
@RestController
@RequestMapping("/pawnProductCat")
public class PawnProductCatController {

    /**
     * PawnProductCatService调用CRUD
     */
    @Resource
    private PawnProductCatService ppcs;


    /**
     * 商品大类全查询
     * @return data为ProductCat集合
     */
    @ApiOperation("查询所有大类相关的任务信息")
    @GetMapping("/getAllProductCat")
    public Result getAllProductCat(ProductCatForm pcf){
        return ppcs.getAllProductCat(pcf);
    }

    /**
     * 商品大类模糊查询
     * @param pcf 中模糊查询参数
     * @return data为ProductCat集合
     */
    @ApiOperation("模糊查询大类相关的任务信息")
    @GetMapping("/getProductCatByLike")
    public Result getProductCatByLike(ProductCatForm pcf) throws DdException {
        return ppcs.getProductCatByLike(pcf);
    }

    /**
     * 商品大类新增
     * @param pcf 商品分类相关信息
     * @return data为null
     */
    @ApiOperation("大类新增相关的任务信息")
    @PostMapping("/saveProductCat")
    public Result saveProductCat(@RequestBody ProductCatForm pcf) throws DdException {
        return ppcs.saveProductCat(pcf);
    }

    /**
     * 商品分类修改
     * @param pcf 商品分类相关信息
     * @return data为null
     */
    @ApiOperation("大类修改相关的任务信息")
    @PostMapping("/updateProductCat")
    public Result updateProductCat(@RequestBody ProductCatForm pcf)throws DdException{
        return ppcs.updateProductCat(pcf);
    }
    /**
     * 商品大类删除
     * @param pcf 根据分类id删除
     * @return data为null
     */
    @ApiOperation("大类删除相关的任务信息")
    @PostMapping("/deleteProductCat")
    public Result deleteProductCat(@RequestBody ProductCatForm pcf) throws DdException {
        return ppcs.deleteProductCat(pcf);
    }

    /**
     * 根据catCode查询大类
     * @param pcf
     * @return ProductCat对象
     */
    @ApiOperation("根据catCode查询大类的任务信息")
    @GetMapping("/getProductCatByCatCode")
    public Result getProductCatByCatCode(ProductCatForm pcf){
        return ppcs.getProductCatByCatCode(pcf);
    }

    /**
     * 查全部小类
     * @param pcf 分页参数
     * @return 返回一个小类的info
     */
    @ApiOperation("查询所有小类相关的任务信息")
    @GetMapping("/getAllXProductCat")
    public Result getAllXProductCat(ProductCatForm pcf){
        return ppcs.getAllXProductCat(pcf);
    }

    /**
     * 根据大类查对应全部小类
     * @param pcf 获取大类类型
     * @return 返回小类集合
     */
    @ApiOperation("根据大类查对应全部小类任务信息")
    @GetMapping("/getXProductCatByD")
    public Result getXProductCatByD(ProductCatForm pcf){
        return ppcs.getXProductCatByD(pcf);
    }
    /**
     * 小类模糊查询
     * @param pcf 小类模糊查询参数str
     * @return 返回小类集合
     */
    @ApiOperation("小类模糊查询任务信息")
    @GetMapping("/getXProductCatByLike")
    public Result getXProductCatByLike(ProductCatForm pcf) throws DdException{
        return ppcs.getXProductCatByLike(pcf);
    }
    /**
     * 根据分类模糊查询
     * @param pcf 大类名和模糊关键字
     * @return 返回小类集合
     */
    @ApiOperation("大类和小类模糊结合查询任务信息")
    @GetMapping("/getXProductCatByDAndLike")
    public Result getXProductCatByDAndLike(ProductCatForm pcf) throws DdException {
        return ppcs.getXProductCatByDAndLike(pcf);
    }

    /**
     * 小类批量删除
     * @param pcf 根据小类catCode删除
     * @return data为null
     */
    @ApiOperation("小类删除任务信息")
    @PostMapping("/deleteXProductCat")
    public Result deleteXProductCat(@RequestBody ProductCatForm pcf) throws DdException {
        return ppcs.deleteXProductCat(pcf);
    }

    /**
     * 新增小类
     * @param pcf 小类对象
     * @return data为null
     */
    @ApiOperation("小类新增任务信息")
    @PostMapping("/saveXProductCat")
    public Result saveXProductCat(@RequestBody ProductCatForm pcf) throws DdException {
        return ppcs.saveXProductCat(pcf);
    }

    /**
     * 根据小类catCode查询所有信息
     * @param pcf catCode
     * @return data为ProductCatXInfo
     */
    @ApiOperation("根据小类catCode查询任务信息")
    @GetMapping("/getXProductByCatCode")
    public Result getXProductByCatCode(ProductCatForm pcf){
        return ppcs.getXProductByCatCode(pcf);
    }

    /**
     * 修改小类信息
     * @param pcf 修改信息
     * @return data为null
     */
    @ApiOperation("小类修改任务信息")
    @PostMapping("/updataXProductCat")
    public Result updataXProductCat(@RequestBody ProductCatForm pcf) throws DdException {
        return ppcs.updataXProductCat(pcf);
    }

    /**
     * 根据cat_name查询
     * @param pcf catName
     * @return ProductCat
     */
    @ApiOperation("根据cat_name查询任务信息")
    @GetMapping("/getDProductCatByCatName")
    public Result getDProductCatByCatName(ProductCatForm pcf){
        return ppcs.getDProductCatByCatName(pcf);
    }
}

